package com.example.zhilierp.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.example.zhilierp.entity.Permission;

import java.util.List;

/**
 * 权限服务接口
 * 定义权限相关的业务逻辑方法
 */
public interface PermissionService extends IService<Permission> {

    /**
     * 根据角色ID查询权限列表
     * @param roleId 角色ID
     * @return 权限列表
     */
    List<Permission> selectPermissionsByRoleId(Long roleId);

    /**
     * 根据用户ID查询权限列表
     * @param userId 用户ID
     * @return 权限列表
     */
    List<Permission> selectPermissionsByUserId(Long userId);

    /**
     * 获取权限树结构
     * @return 权限树
     */
    List<Permission> getPermissionTree();

    /**
     * 获取用户的菜单树
     * @param userId 用户ID
     * @return 菜单树
     */
    List<Permission> getUserMenuTree(Long userId);

    /**
     * 保存角色权限
     * @param roleId 角色ID
     * @param permissionIds 权限ID列表
     * @return 操作结果
     */
    boolean saveRolePermissions(Long roleId, List<Long> permissionIds);

    /**
     * 根据角色ID删除角色权限关联
     * @param roleIds 角色ID数组
     * @return 操作结果
     */
    boolean deleteRolePermissionsByRoleIds(Long[] roleIds);

    /**
     * 根据权限ID删除角色权限关联
     * @param permissionIds 权限ID数组
     * @return 操作结果
     */
    boolean deleteRolePermissionsByPermissionIds(Long[] permissionIds);
}